/* 
 * File:   Init.h
 * Author: thiago
 *
 * Created on 30 de Março de 2010, 13:21
 */

#ifndef _INIT_H
#define	_INIT_H

#include "../Particula.h"

#define GLOBAL          extern

GLOBAL float posicaoX;//Usada apenas para gerar as posições iniciais das particulas.
GLOBAL float posicaoY;//Usada apenas para gerar as posições iniciais das particulas.
GLOBAL int threadsPerBlock;
GLOBAL int blocksPerGrid;
GLOBAL int totalParticulas;
GLOBAL int resolucaoPartX;
GLOBAL int resolucaoPartY;
GLOBAL int resolucaoGridX;
GLOBAL int resolucaoGridY;
GLOBAL int totalCelulasGrid;
GLOBAL float XminGrid;
GLOBAL float XmaxGrid;
GLOBAL float YminGrid;
GLOBAL float YmaxGrid;
GLOBAL float deltaXPart;
GLOBAL float deltaYPart;
GLOBAL float deltaXGrid;
GLOBAL float deltaYGrid;
GLOBAL float massa;
GLOBAL float massaEspecificaInicial;
GLOBAL float h;
GLOBAL float3 gravidade;
GLOBAL unsigned int* keys;
GLOBAL unsigned int* keysDevice;
GLOBAL unsigned int* values;
GLOBAL unsigned int* valuesDevice;
GLOBAL unsigned int* count;
GLOBAL unsigned int* offSet;
GLOBAL unsigned int* countDevice;
GLOBAL unsigned int* offSetDevice;
//Vetores para controle das particulas.
GLOBAL float3* posicoesParticulas;
GLOBAL float3* posicoesParticulas2;
GLOBAL float3* posicoesParticulasT;
GLOBAL float3* posicoesParticulasT2;
GLOBAL float3* forcaPressaoVetor;
GLOBAL float3* forcaAceleracaoVetor;
GLOBAL float3* forcaViscosidadeVetor;
GLOBAL float3* forcaPressaoVetorDevice;
GLOBAL float3* forcaAceleracaoVetorDevice;
GLOBAL float3* forcaViscosidadeVetorDevice;
GLOBAL Particula* particulas;
GLOBAL Particula* particulasDevice;
GLOBAL Particula* particulas2;
GLOBAL Particula* particulasDevice2;
GLOBAL Particula* particulasT;
GLOBAL Particula* particulasT2;
GLOBAL bool mostraGrid;
GLOBAL bool mostraEixo;
GLOBAL bool mostraVetores;
GLOBAL bool mostraPressao;
GLOBAL bool mostraViscosidade;
GLOBAL bool mostraAceleracao;
GLOBAL bool temGravidade;

bool verificaParametros(int argc, char** argv);
void init();
void iniciaRender();
void iniciaDados();
void iniciaEstruturas();
void iniciaParticulas();
void posicionaParticulas();
void iniciaCuda();

#endif	/* _INIT_H */

